// 请求模块

import axios from 'axios'
import store from '@/store'
import JSONbig from 'json-bigint' // 导入 JOSN-BIGINT文件

const request = axios.create({
  // baseURL: 'http://toutiao-app.ithiema.net/' // 基础路径
  // 可以解决 超过 javaScript 定义的安全整数的一个问题 将超出的数字转为一个 BigNumber 类型的对象
  transformResponse: [
    function (data) {
      try {
        // 如果是 JSON 格式的字符串 转换为JSON格式几个
        return JSONbig.parse(data)
      } catch (err) {
        // 非 JSON 格式的字符串,直接返回即可
        return data
      }
    }
  ]
})

// 请求拦截器
request.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // console.log(config)
  // 在请求前 拿到用户user登录状态数据信息 以对象解构的方式拿到
  const { user } = store.state
  // 判断 只有在user这个登录状态 和 用户token值时 才执行下面成功代码
  if (user && user.token) {
    // 按接口要求添加响应头Authorization
    config.headers.Authorization = `Bearer ${user.token}`
  }
  return config
}, function (error) {
  // 对请求错误做些什么 返回一个错误信息即可
  return Promise.reject(error)
})

// 响应拦截器

export default request
